﻿/*----------------------------------------------------------------------------------------
*
*  Copyright 2019, Gao Hai Hui, <fromzeropoint@126.com>.  All rights reserved.
*  https://gitee.com/helloworldghh/xoskit.git
*  Use of this source code is governed by a MIT license
*  that can be found in the License file.
*
----------------------------------------------------------------------------------------*/
#ifndef __XOSKIT_XOS_CORE_XOS_STL_SRC_PROTOCOL_PKG_PKG_DIC_RES_H__
#define __XOSKIT_XOS_CORE_XOS_STL_SRC_PROTOCOL_PKG_PKG_DIC_RES_H__

#include <string>
#include "../../import/head.h"
#include "../../tools/head.h"
#include "../db/db_get.h"
#include "pkg_public_functions.h"
#include "pkg_base_ret_list_res.h"

namespace xos_protocol
{

    template< class T, class PACKER, class SESSION, class DATA, class PACKAGE >
    class pkg_dic_res : public pkg_base_ret_list_res<
        pkg_dic_res< T, PACKER, SESSION, DATA, PACKAGE >,
        T,
        PACKER,
        SESSION,
        DATA,
        PACKAGE >
    {
    public:
        //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        // 
        typedef pkg_dic_res< T, PACKER, SESSION, DATA, PACKAGE > THIS_CHILD;
        typedef pkg_base_ret_list_res<
            THIS_CHILD,
            T,
            PACKER,
            SESSION,
            DATA,
            PACKAGE > BASE;

    public:
        //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        // 
        pkg_dic_res( xos_box::i_serial * pSerial, xos_container::i_container * pContainer, int nProtocol, int nMaxPackageHeadLen ) :
            BASE( pSerial, pContainer, nProtocol, nMaxPackageHeadLen )
        {
        }

        ~pkg_dic_res()
        {
        }

    public:
        //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        //
        int helper_dis_compose( xos_box::i_buf * pBuf )
        {
            int ret = 0;

            ret = f_res_ret_list_dis_compose_dic< THIS_CHILD, T, PACKER >( this, pBuf );

            return ret;
        }

        //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        //
        int filter_list_by_data()
        {
            int ret = 0;
            typename T::GROUP::LIST & t_list = T::group()->get_list();
            std::copy( t_list.begin(), t_list.end(), std::back_inserter( BASE::list_data ) );
            return ret;
        }

        /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        // 
        int helper_done( DATA * pData )
        {
            int ret = 0;
            return ret;
        }

    };

} // xos_protocol

#endif // __XOSKIT_XOS_CORE_XOS_STL_SRC_PROTOCOL_PKG_PKG_DIC_RES_H__
